package com.gdwstudy.synchronized_;

/**
 * @author 关道伟
 * @version 1.0
 * 使用同步方法 解决超卖问题
 */
public class SellTicket {
    public static void main(String[] args) {
        T t = new T();
        T t1 = new T();
        T t2 = new T();
        t.start();
        t1.start();
        t2.start();
    }
}

class T extends Thread{
    private static int ticketnum = 20 ;//多个线程共享资源

    private synchronized void sell(){//同步方法 加锁 同一时间只允许一个线程执行run方法
        //要求多个线程的锁对象为同一个
        while(ticketnum>0){
            //有票 售票时间1秒
            try {
                Thread.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if(ticketnum<=0){
                System.out.println("售票结束...");
                return;
            }
            System.out.println("窗口"+Thread.currentThread().getName()+" 售出一张票"
                    +"剩余票数"+(--ticketnum));
        }
    }
    @Override
    public  void run() {

       this.sell();

    }
}